#include <iostream>

using namespace std;
//C++中利用new操作符在堆区开辟数据
//堆区开辟的数据，由程序员手动开辟，手动释放，释放利用操作符delete
//语法：new 数据类型
//利用new创建的数据，会返回该数据对应的类型的指针

//1.new的基本语法
int *func(){
    //在堆区创建整型数据
    //new返回的是该数据类型的指针

    int* p = new int(10);       //int用int*接收
    return p;
}


void test01(){
    int *p = func();
    cout << *p << endl;
    cout << *p << endl;
    //堆区开辟的数据，由程序员手动开辟，手动释放，释放利用操作符delete
    delete p;
    // cout << *p << endl;  //内存已经被释放，再次访问就是非法操作，会报错

}


//2.在堆区利用new开辟数组
void test02(){
    int *arr = new int[10];//代表10个数据
    for (int i = 0; i < 10; i++)
    {
        arr[i] = i + 100;
    }
    for (int i = 0; i < 10; i++)
    {
        cout << arr[i] << endl;
    }
    //释放堆区数组
    //释放数组的时候，要加上[]才可以
    delete[] arr;
    
}
int main(){
	test01();
	test02();
	
	system("pause");
	return 0;
}

